package cc.momas.v2;

/**
 * @author Sod-Momas
 * @since 2020/11/22
 */
public interface TokenReader {
    /**
     * 下个token
     *
     * @return 下个token
     */
    Token next();

    /**
     * 前一个token
     *
     * @return 前一个token
     */
    Token prev();

    /**
     * 指定位置token
     *
     * @param index 位置下标
     * @return 指定位置下标
     */
    Token get(int index);

    /**
     * 当前下标
     *
     * @return 当前下标
     */
    int index();

    /**
     * 重置下标
     *
     * @param index 指定下标
     * @return 原下标位置
     */
    int reset(int index);

    default void dump() {
        int cur = reset(0);
        Token token;
        while ((token = next()) != null) {
            System.out.printf("%s\t\t%s%n", token.getTokenType(), token.getTokenText());
        }
        reset(cur);
    }
}
